Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

azurerm_windows_web_app : fix the issue of incorrect application stack setting after updating the web app without changing the application_stack configuration #23372

Merged
merged 4 commits into from
Nov 22, 2023

Conversation

sinbai
Copy link
Contributor

@sinbai sinbai commented Sep 25, 2023

Two purposes of this PR:

  • Application stack is incorrectly updated

Symptom:

  1. Creating azurerm_windows_web_app with site_config as shown below.
site_config {
health_check_path           = "/health"
load_balancing_mode="LeastRequests"
  application_stack {
      current_stack                = "java"
    java_embedded_server_enabled = true
      java_version                 = "11"
    } 
}
  1. Update azurerm_windows_web_app and only change health_check_eviction_time_in_min from null to 5 as follows.
site_config {
        health_check_eviction_time_in_min = 5
	health_check_path           = "/health"
	load_balancing_mode="LeastRequests"
        application_stack {
           current_stack                = "java"
	    java_embedded_server_enabled = true
            java_version                 = "11"
        }
}

Actual:
image
Expected:
image

Per the following code in the existing in Read(), I assume this should also be added to Update() function to solve the above issue.

// Despite being part of the defined `Get` response model, site_config is always nil so we get it explicitly
webAppSiteConfig, err := client.GetConfiguration(ctx, id.ResourceGroup, id.SiteName)
if err != nil {
   return fmt.Errorf("reading Site Config for Windows %s: %+v", id, err)
}
  • I assume that we should only set JavaVersion in Read() function when currentStack is java since the API will return the value of JavaVersion that was once set.

Test result:
PASS: TestAccWindowsWebApp_updateAppStack (611.57s)

Copy link
Member

@jackofallops jackofallops left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @sinbai - Thanks for this change and apologies for the delayed review as we've been discussing this internally trying to find a better way to work with the app_stack values for Windows apps. I've left one comment for an additional change, since the current_stack property is Optional we should not rely on it. Given that there is other reliance on the value already present, we're going to accept it, but we'll need the comment adding to the docs for now, and we'll be taking a look at addressing it appropriately for 4.0 as we believe it will require a breaking change in the longer term.
Thanks!

winAppStack.JavaVersion = pointer.From(appSiteConfig.JavaVersion)

// we should only set JavaVersion when currentStack is java since the API will return the value of JavaVersion that was once set
if currentStack == "java" {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If the optional property current_stack is not set, this will result in a diff. Since this is also true for the other cases where this is used, can we add a note to the docs for this property to call this out to users?, perhaps something like:

~> **NOTE:** Windows Web apps can configure multiple `app_stack` properties, it is recommended to always configure this `Optional` value and set it to the primary application stack of your app to ensure correct operation of this resource and display the correct metadata in the Azure Portal.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @jackofallops thanks for your feedback. The doc has been updated. Could you please take another look?

Copy link
Member

@jackofallops jackofallops left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @sinbai - Thanks for adding the requested change. During testing I've found that this is actually doesn't work as expected due to a slightly larger problem / bug. I'm investigating now and I may need to push some changes to your branch to fix the broader problem. If that happens, I'll get another maintainer to review my additions and we'll get this in as soon as it's all good and testing works as expected.

Copy link
Contributor

@tombuildsstuff tombuildsstuff left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 👍

@jackofallops
Copy link
Member

Test look good, failure transient and unrelated to this change

image

@jackofallops jackofallops merged commit 9b4c519 into hashicorp:main Nov 22, 2023
24 checks passed
@github-actions github-actions bot added this to the v3.82.0 milestone Nov 22, 2023
opentofu-provider-sync-service-account pushed a commit to opentofu/terraform-provider-azurerm that referenced this pull request Nov 22, 2023
dduportal referenced this pull request in jenkins-infra/azure Nov 24, 2023
<Actions>
<action
id="f410411e63aff4bb73a81c2aec1d373cf8a903e63b30dee2006b0030d8a94cc8">
        <h3>Bump Terraform `azurerm` provider version</h3>
<details
id="1d9343c012f5434ac9fe8a98135bae3667b399259be16d9b14302ea3bd424a24">
            <summary>Update Terraform lock file</summary>
<p>&#34;hashicorp/azurerm&#34; updated from &#34;3.81.0&#34; to
&#34;3.82.0&#34; in file &#34;.terraform.lock.hcl&#34;</p>
            <details>
                <summary>3.82.0</summary>
<pre>Changelog retrieved
from:&#xA;&#x9;https://github.com/hashicorp/terraform-provider-azurerm/releases/tag/v3.82.0&#xA;FEATURES:&#xA;&#xA;*
New Data Source: `azurerm_monitor_workspace`
([#23928](hashicorp/terraform-provider-azurerm#23928
New Resource: `azurerm_application_load_balancer_subnet_association`
([#23628](https://github.com/hashicorp/terraform-provider-azurerm/issues/23628))&#xA;&#xA;ENHANCEMENTS:&#xA;&#xA;*
dependencies: updating to `v0.20231117.1130141` of
`github.com/hashicorp/go-azure-sdk`
([#23945](hashicorp/terraform-provider-azurerm#23945
`azurestackhci`: updating to API Version `2023-08-01`
([#23939](hashicorp/terraform-provider-azurerm#23939
`dashboard`: updating to API Version `2023-09-01`
([#23929](hashicorp/terraform-provider-azurerm#23929
`hpccache`: updating to API version `2023-05-01`
([#24005](hashicorp/terraform-provider-azurerm#24005
`mssql`: updating resources using `hashicorp/go-azure-sdk` to API
Version `2023-02-01-preview`
([#23721](hashicorp/terraform-provider-azurerm#23721
`templatespecversions`: updating to API Version `2022-02-01`
([#24007](hashicorp/terraform-provider-azurerm#24007
Data Source: `azurerm_template_spec_version` - refactoring to use
`hashicorp/go-azure-sdk`
([#24007](hashicorp/terraform-provider-azurerm#24007
`azurerm_cosmosdb_postgresql_cluster` -
`coordinator_storage_quota_in_mb` and `coordinator_vcore_count` are no
longer required for read replicas
([#23928](hashicorp/terraform-provider-azurerm#23928
`azurerm_dashboard_grafana` - `sku` can now be set to `Essential`
([#23934](hashicorp/terraform-provider-azurerm#23934
`azurerm_gallery_application_version` - add support for the
`config_file`, `package_file` and `target_region.exclude_from_latest`
properties
([#23816](hashicorp/terraform-provider-azurerm#23816
`azurerm_hdinsight_hadoop_cluster` - `script_actions` is no longer Force
New
([#23888](hashicorp/terraform-provider-azurerm#23888
`azurerm_hdinsight_hbase_cluster` - `script_actions` is no longer Force
New
([#23888](hashicorp/terraform-provider-azurerm#23888
`azurerm_hdinsight_interactive_query_cluster` - `script_actions` is no
longer Force New
([#23888](hashicorp/terraform-provider-azurerm#23888
`azurerm_hdinsight_kafka_cluster` - `script_actions` is no longer Force
New
([#23888](hashicorp/terraform-provider-azurerm#23888
`azurerm_hdinsight_spark_cluster` - `script_actions` is no longer Force
New
([#23888](hashicorp/terraform-provider-azurerm#23888
`azurerm_kubernetes_cluster` - add support for the `gpu_instance`
property
([#23887](hashicorp/terraform-provider-azurerm#23887
`azurerm_kubernetes_cluster_node_pool` - add support for the
`gpu_instance` property
([#23887](hashicorp/terraform-provider-azurerm#23887
`azurerm_log_analytics_workspace` - add support for the `identity`
property
([#23864](hashicorp/terraform-provider-azurerm#23864
`azurerm_linux_function_app` - add support for dotnet 8
([#23638](hashicorp/terraform-provider-azurerm#23638
`azurerm_linux_function_app_slot` - add support for dotnet 8
([#23638](hashicorp/terraform-provider-azurerm#23638
`azurerm_managed_lustre_file_system` - export attribute `mgs_address`
([#23942](hashicorp/terraform-provider-azurerm#23942
`azurerm_mssql_database` - support for Hyperscale SKUs
([#23974](hashicorp/terraform-provider-azurerm#23974
`azurerm_mssql_database` - refactoring to use `hashicorp/go-azure-sdk`
([#23721](hashicorp/terraform-provider-azurerm#23721
`azurerm_mssql_server` - refactoring to use `hashicorp/go-azure-sdk`
([#23721](hashicorp/terraform-provider-azurerm#23721
`azurerm_shared_image` - add support for `trusted_launch_supported`
([#23781](hashicorp/terraform-provider-azurerm#23781
`azurerm_spring_cloud_container_deployment` - add support for the
`application_performance_monitoring_ids` property
([#23862](hashicorp/terraform-provider-azurerm#23862
`azurerm_spring_cloud_customized_accelerator` - add support for the
`accelerator_type` and `path` properties
([#23797](hashicorp/terraform-provider-azurerm#23797
`azurerm_point_to_site_vpn_gateway` - allow multiple
`connection_configurations` blocks
([#23936](hashicorp/terraform-provider-azurerm#23936
`azurerm_private_dns_cname_record` - `ttl` can now be set to 0
([#23918](hashicorp/terraform-provider-azurerm#23918
`azurerm_windows_function_app` - add support for dotnet 8
([#23638](hashicorp/terraform-provider-azurerm#23638
`azurerm_windows_function_app_slot` - add support for dotnet 8
([#23638](https://github.com/hashicorp/terraform-provider-azurerm/issues/23638))&#xA;&#xA;BUG
FIXES:&#xA;* `azurerm_api_management` - correct a bug with additional
location zones within the `additional_location` block
([#23943](hashicorp/terraform-provider-azurerm#23943
`azurerm_dev_test_linux_virtual_machine` - `storage_type` is now
ForceNew to match the updated API behaviour
([#23973](hashicorp/terraform-provider-azurerm#23973
`azurerm_dev_test_windows_virtual_machine` - `storage_type` is now
ForceNew to match the updated API behaviour
([#23973](hashicorp/terraform-provider-azurerm#23973
`azurerm_disk_encryption_set` - resource will recreate if `identity`
changes from `SystemAssigned` to `UserAssigned`
([#23904](hashicorp/terraform-provider-azurerm#23904
`azurerm_eventhub_cluster`: `sku_name` is no longer ForceNew
([#24009](hashicorp/terraform-provider-azurerm#24009
`azurerm_firewall` - recasing the value for `firewall_policy_id` to
workaround the API returning the incorrect casing
([#23993](hashicorp/terraform-provider-azurerm#23993
`azurerm_security_center_subscription_pricing` - fix a bug preventing
removal of `extensions` and downgrading `tier` to `Free`
([#23821](hashicorp/terraform-provider-azurerm#23821
`azurerm_windows_web_app` - fix an issue of incorrect application stack
settings during update
([#23372](https://github.com/hashicorp/terraform-provider-azurerm/issues/23372))&#xA;&#xA;&#xA;</pre>
            </details>
        </details>
<a
href="https://infra.ci.jenkins.io/job/terraform-jobs/job/azure/job/main/896/">Jenkins
pipeline link</a>
    </action>
</Actions>

---

<table>
  <tr>
    <td width="77">
<img src="https://www.updatecli.io/images/updatecli.png" alt="Updatecli
logo" width="50" height="50">
    </td>
    <td>
      <p>
Created automatically by <a
href="https://www.updatecli.io/">Updatecli</a>
      </p>
      <details><summary>Options:</summary>
        <br />
<p>Most of Updatecli configuration is done via <a
href="https://www.updatecli.io/docs/prologue/quick-start/">its
manifest(s)</a>.</p>
        <ul>
<li>If you close this pull request, Updatecli will automatically reopen
it, the next time it runs.</li>
<li>If you close this pull request and delete the base branch, Updatecli
will automatically recreate it, erasing all previous commits made.</li>
        </ul>
        <p>
Feel free to report any issues at <a
href="https://github.com/updatecli/updatecli/issues">github.com/updatecli/updatecli</a>.<br
/>
If you find this tool useful, do not hesitate to star <a
href="https://github.com/updatecli/updatecli/stargazers">our GitHub
repository</a> as a sign of appreciation, and/or to tell us directly on
our <a
href="https://matrix.to/#/#Updatecli_community:gitter.im">chat</a>!
        </p>
      </details>
    </td>
  </tr>
</table>

Co-authored-by: Jenkins Infra Bot (updatecli) <[email protected]>
@sinbai sinbai deleted the appservice/fix_icm_issue branch March 28, 2024 02:45
Copy link

I'm going to lock this pull request because it has been closed for 30 days ⏳. This helps our maintainers find and focus on the active contributions.
If you have found a problem that seems related to this change, please open a new issue and complete the issue template so we can capture all the details necessary to investigate further.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Apr 28, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants